home *** CD-ROM | disk | FTP | other *** search
- /******************************************************************************\
-
- Module: PF_MetaHandler.c
-
- Purpose: Performance QD3D metahandler functions
-
- Author: Sun-Inn Shih
-
- Copyright (C) 1993-96 Apple Computer, Inc. All rights reserved.
-
- \*****************************************************************************/
-
- #include <QD3D.h>
- #include <QD3DGeometry.h>
- #include <QD3DRenderer.h>
- #include <QD3DExtension.h>
-
- #include "IRS_Geometry.h"
- #include "IRS_MetaHandler.h"
- #include "IRS_Methods.h"
- #include "IRS_Update.h"
-
- /*===========================================================================*\
- *
- * Routine: IRS_Geometry_MetaHandler()
- *
- *
- * kQ3GeometryTypeTriangle
- * kQ3GeometryTypeLine
- * kQ3GeometryTypePoint
- * kQ3GeometryTypeMarker
- * kQ3GeometryTypePixmapMarker
-
- \*===========================================================================*/
-
- static TQ3XFunctionPointer IRS_Geometry_MetaHandler(
- TQ3XMethodType pMethodType)
- {
- switch (pMethodType)
- {
- /* triangle handler : required */
- case kQ3GeometryTypeTriangle:
- return (TQ3XFunctionPointer) IRS_Geometry_Triangle;
-
- /* lines : required */
- case kQ3GeometryTypeLine:
- return (TQ3XFunctionPointer) IRS_Geometry_Line;
-
- /* point handler : required */
- case kQ3GeometryTypePoint:
- return (TQ3XFunctionPointer) IRS_Geometry_Point;
-
- /* marker handler : required */
- case kQ3GeometryTypeMarker:
- return (TQ3XFunctionPointer) IRS_Geometry_Marker;
-
- /* pixmapMarker handler : required */
- case kQ3GeometryTypePixmapMarker:
- return (TQ3XFunctionPointer) IRS_Geometry_PixmapMarker;
-
- /* pixmapMarker handler : required */
- case kQ3GeometryTypeTriMesh :
- return (TQ3XFunctionPointer) IRS_Geometry_TM;
-
- default:
- return NULL;
- }
- }
-
- /*===========================================================================*\
- *
- * Routine: IRS_Update_Matrix_MetaHandler()
- *
- * update
- *
- \*===========================================================================*/
-
- static TQ3XFunctionPointer IRS_Update_Matrix_MetaHandler(
- TQ3XMethodType pMethodType)
- {
- switch (pMethodType)
- {
- /* update the local to frustum matrix */
- case kQ3XMethodTypeRendererUpdateMatrixLocalToFrustum:
- return (TQ3XFunctionPointer) IRS_Update_Matrix_localToFrustum;
-
- default:
- return NULL;
- }
- }
-
-
- /*===========================================================================*\
- *
- * Routine: IRSMetaHandler()
- *
- * Comments: top level meta handler
- *
- \*===========================================================================*/
- TQ3XFunctionPointer IRSMetaHandler(
- TQ3XMethodType pMethodType)
- {
- switch (pMethodType)
- {
- /* initialization */
- case kQ3XMethodTypeObjectNew:
- return (TQ3XFunctionPointer) IRSNew;
-
- /* clean up */
- case kQ3XMethodTypeObjectDelete:
- return (TQ3XFunctionPointer) IRSDelete;
-
- /* start frame : required */
- case kQ3XMethodTypeRendererStartFrame:
- return (TQ3XFunctionPointer) IRSStartFrame;
-
- /* end frame: optional */
- case kQ3XMethodTypeRendererEndFrame:
- return (TQ3XFunctionPointer) IRSEndFrame;
-
- /* start pass : required*/
- case kQ3XMethodTypeRendererStartPass:
- return (TQ3XFunctionPointer) IRSStartPass;
-
- /* end pass : required */
- case kQ3XMethodTypeRendererEndPass:
- return (TQ3XFunctionPointer) IRSEndPass;
-
- /* cancel rendering: required*/
- case kQ3XMethodTypeRendererCancel:
- return (TQ3XFunctionPointer) IRSCancel;
-
- /* to second level metahandlers */
- /* geometry meta handler: required */
- case kQ3XMethodTypeRendererSubmitGeometryMetaHandler:
- return (TQ3XFunctionPointer) IRS_Geometry_MetaHandler;
-
- /* matrix meta handler: optional */
- case kQ3XMethodTypeRendererUpdateMatrixMetaHandler:
- return (TQ3XFunctionPointer) IRS_Update_Matrix_MetaHandler;
-
- default:
- return NULL;
- }
- }
-